<template>
  <div class="resource-dialog">
    <el-dialog v-bind="$attrs" v-on="$listeners" title="外部资源引用"
               width="600px" :close-on-click-modal="false"
               @open="onOpen"
    >
      <el-input v-for="(item, index) in resources" :key="index" v-model="resources[index]"
                class="url-item" placeholder="请输入 css 或 js 资源路径" prefix-icon="el-icon-link" clearable>
        <el-button slot="append" icon="el-icon-delete" @click="deleteOne(index)"></el-button>
      </el-input>
      <el-button-group class="add-item">
        <el-button plain @click="addOne('https://lib.baomitu.com/jquery/1.8.3/jquery.min.js')">jQuery1.8.3</el-button>
        <el-button plain @click="addOne('https://unpkg.com/http-vue-loader')">http-vue-loader</el-button>
        <el-button icon="el-icon-circle-plus-outline" plain @click="addOne('')">添加其他</el-button>
      </el-button-group>
      <div slot="footer">
        <el-button @click="close">取消</el-button>
        <el-button type="primary" @click="handelConfirm">确定</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import { deepClone } from '@/utils'

export default {
  name: 'ResourceDialog',
  props: ['originResource'],
  data () {
    return {
      resources: null
    }
  },
  methods: {
    onOpen () {
      this.resources = this.originResource.length ? deepClone(this.originResource) : ['']
    },
    deleteOne (index) {
      this.resources.splice(index, 1)
    },
    addOne (url) {
      if (this.resources.indexOf(url) > -1) {
        this.$message('资源已存在')
      } else {
        this.resources.push(url)
      }
    },
    close () {
      this.$emit('update:visible', false)
    },
    handelConfirm () {
      const results = this.resources.filter(item => !!item) || []
      this.$emit('save', results)
      this.close()
      if (results.length) {
        this.resources = results
      }
    }
  }
}
</script>

<style scoped>
.add-item{
  margin-top: 8px;
}
.url-item{
  margin-bottom: 12px;
}
</style>
